%#**+***##*##****++++=++++*+==========*##%@%@%%%%%@%##%%%%%%%###%%%%%
++#%%%@@@%****++++***++*++============#*#@@@@%%%#%%#####%%%%%%%%###%%
+++#@@@@%%*+***++++=====-----=+***+++%%%@@@@%%%%%%%%###%####%%%%%%%#%
#***#%###+====---------------#%%####*%%%@@@@@%%%%%%%%#####%%%%%%%@@%@
+*%%#*+=*-----------------=-+%%%#*##***###%%@@%%%%%%%##%%####%%%%@@@@
#*#++==+*===============++++*###**=+*###**+++%%%%%###+*##%%#%%%%%%@@@
%##+--==========++++++++**#####**++########**+%%%%##**++++++**##%%@@@
**##+===+++++++++**#********#%%**###%%##%%###*%%%%%%%%%%%##*++===++*#
***+++++++++*##*********#**#%%#**##%*%%%####%%%%%%%%%%%%%%%%%##*++==+
+++++++*+**#####******#*****#%#**#%#*%%%%##%%%%%%%%%%%%%%%%%%%%%%##**
+++*****++++**+*************+*%##%##+#%%@%##%%%%%%%%%%%%%%%%%%%%%%%%%
********++*********##*#*****+*##%#%#*##%%####%%%%%#%%%%%%%%%%%%%%%%%%
**#************#########*####****#############**####%%%%%%%%%%%%%%%%%
######**####%%%%%%%%%##########%%%######*#################%%%%%%%%%%%
##########%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%####################%
##%%%%%%%%%%%%%%%%%%#####%%%%#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%#####
%%%##%%%######%%%%%%%#####%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
#%%%%%%%%%%#%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%#%%%%%%%%%%%##*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%
%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%
%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%##%%%###%%%%%%####%%%%%%######%
%%%%%%%%%%%%%%%%%%%%##########%#%%%%%%%%##%%%%%%####################%
@@@@%%@%%%@@@@@@@%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%